热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java|学习笔记01概论

目录1.解释型语言和编译型语言编译型语言解释型语言Java是解释型语言or编译型语言?2.Java的发展历史3.Java平台的三大版本JavaSE(Ja

目录

1.解释型语言和编译型语言

编译型语言

解释型语言

Java是解释型语言 or 编译型语言?

2.Java的发展历史

3.Java平台的三大版本

Java SE ( Java Platform Standard Edition)

Java EE ( Java Platform Enterprise Edition )

Java ME ( Java Platform Micro Edition)

4.Java开发环境

JDK(Java Development Kit)

JRE(Java Runtime Environment)

JVM(Java Virtual Machine)

5.Java的版本

6.Java程序的执行过程 




1.解释型语言和编译型语言


编译型语言

程序在执行之前需要一个专门的编译过程,把源代码编译成机器语言,运行时不需要再次翻译,直接使用之前编译的结果就行。代表性的编译型语言有C、C++、Pascal等

特点:程序执行效率高;依赖编译器,因此跨平台性要一差些


解释型语言

源代码不是直接翻译成机器语言,而是先翻译成中间代码,再由解释器对中间代码进行解释运行。代表性的解释型语言有Python、Javascript、Shell等

特点:运行效率一般较低,依赖解释器,跨平台性好


Java是解释型语言 or 编译型语言?

Java究竟是解释型语言还是编译型语言,在程序界依然讨论不休

Java同时具有解释型语言和编译型语言的特点,说Java是编译型语言,主要是因为现在的JVM为了效率,都有一些JIT(Just In-Time Compiler,即时编译器)优化,它又会把热点代码(被多次调用的方法、被多次执行的循环体)的.class的二进制代码编译为本地的机器码直接运行

说Java是编译型语言,是因为Java代码编译后的字节码文件不能直接运行在操作系统上,还需要经过JVM解释为机器码才能在对应操作系统上运行

从Java语言的特点来看,其实它更偏向于解释型语言,比如它的运行效率相比C、C++等语言要低一些、它依赖解释器且跨平台性较好。事实上,随着现代语言的发展,以及即时编译等技术的出现,解释型语言和编译型语言的差距已经逐渐缩小,不必太过纠结于此


2.Java的发展历史

Java的前身:1991年4月,Sun公司成立了Green项目小组,专攻智能家电的嵌入式控制系统,由James Gosling博士领导的绿色计划(Green Project)开始启动,这个计划的产品就是Java语言的前身:Oak(橡树)

Java的诞生:1995年5月23日,Oak语言改名为Java,并且在SunWorld大会上正式发布Java 1.0版本。Java语言第一次提出了“一次编译,到处运行”的口号

JavaOne大会:1996年5月底,Sun公司于美国旧金山举行了首届JavaOne大会

Java的三个版本:1999年6月,发布Java的三个版本:J2SE、J2EE、J2ME

命名的重大更新:2005年6月,Java SE6.0发布,J2EE更名为Java EE,J2SE更名为Java SE,J2ME更名为Java ME

Oracle公司收购Sun:2009年4月20日,Oracle公司宣布正式以74亿美元的价格收购Sun公司,Java商标从此正式归Oracle所有

JDK1.8发布:2014年3月18日,Oracle公司发布Java SE 1.8

Java最新版本:2022年,JDK19发布


3.Java平台的三大版本


Java SE ( Java Platform Standard Edition)

Java平台标准版,以前称为 J2SE。JavaSE主要用于桌面应用开发,同时也是Java的基础


Java EE ( Java Platform Enterprise Edition )

Java平台企业版,以前称为 J2EE。JavaEE主要用于Web项目的开发,包括十三种核心技术:JDBC、JNDI、EJB、RMI、Servlet、JSP、XML、JMS、Java IDL、JTS、JTA、JavaMail和JAF


Java ME ( Java Platform Micro Edition)

Java平台微型版,以前称为 J2ME。JavaME主要为机顶盒、移动电话和PDA之类嵌入式消费电子设备提供开发环境


4.Java开发环境


JDK(Java Development Kit)

Java开发工具包,其中包括编译工具(javac)打包工具(jar)等,也包括JRE


JRE(Java Runtime Environment)

Java运行时环境,其中包括JVM和Java核心类库,如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可


JVM(Java Virtual Machine)

Java虚拟机,JVM可以把字节码解释成具体平台上的机器指令执行,这是Java能够“一次编译,到处运行”的原因


5.Java的版本

Java的版本有两种描述,一种是这样的,比如Java 8;另一种是这样的JDK1.8,它们是一个意思。通常程序员口中的Java版本,指的其实是Java的JDK版本,我们只需要知道

JDK1.8 == JDK8 == Java 8 

JDK1.9 == JDK9 == Java 9

至于为什么JDK1.9 == JDK9,这其实是一个历史遗留问题,JDK1.9的下一个版本没有命名为JDK2.0,而是命名为了JDK10,对应着Java 10,有兴趣的同学可以参考这篇博客——Java--Java版本和JDK版本_MinggeQingchun的博客-CSDN博客_java最新版本是多少 


目前Java最新版本是JDK19 (JDK19 == Java 19

可以到Oracle的官网查看Java的最新版本:Java Downloads | Oracle 中国



6.Java程序的执行过程 


推荐阅读
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • 润乾报表JNDI配置异常分析与解决方法
    在使用润乾报表时,通过JNDI连接数据源是常见的配置方式。本文详细分析了JNDI配置异常的原因,并提供了具体的解决方法。重点讨论了JNDI名称在三个关键位置的配置:1. Tomcat或应用服务器的数据源配置(以Tomcat为例);2. 润乾报表中的数据源配置;3. 应用程序代码中的JNDI名称引用。通过这些步骤,可以有效解决JNDI配置异常问题,确保报表系统的稳定运行。 ... [详细]
  • Python 实战:异步爬虫(协程技术)与分布式爬虫(多进程应用)深入解析
    本文将深入探讨 Python 异步爬虫和分布式爬虫的技术细节,重点介绍协程技术和多进程应用在爬虫开发中的实际应用。通过对比多进程和协程的工作原理,帮助读者理解两者在性能和资源利用上的差异,从而在实际项目中做出更合适的选择。文章还将结合具体案例,展示如何高效地实现异步和分布式爬虫,以提升数据抓取的效率和稳定性。 ... [详细]
  • Amoeba 通过优化 MySQL 的读写分离功能显著提升了数据库性能。作为一款基于 MySQL 协议的代理工具,Amoeba 能够高效地处理应用程序的请求,并根据预设的规则将 SQL 请求智能地分配到不同的数据库实例,从而实现负载均衡和高可用性。该方案不仅提高了系统的并发处理能力,还有效减少了主数据库的负担,确保了数据的一致性和可靠性。 ... [详细]
  • 深入理解排序算法:集合 1(编程语言中的高效排序工具) ... [详细]
  • HTML 中的 meta 和 script 标签属性是否区分大小写? ... [详细]
  • Python全局解释器锁(GIL)机制详解
    在Python中,线程是操作系统级别的原生线程。为了确保多线程环境下的内存安全,Python虚拟机引入了全局解释器锁(Global Interpreter Lock,简称GIL)。GIL是一种互斥锁,用于保护对解释器状态的访问,防止多个线程同时执行字节码。尽管GIL有助于简化内存管理,但它也限制了多核处理器上多线程程序的并行性能。本文将深入探讨GIL的工作原理及其对Python多线程编程的影响。 ... [详细]
  • C++ 开发实战:实用技巧与经验分享
    C++ 开发实战:实用技巧与经验分享 ... [详细]
  • 本文详细探讨了 jQuery 中 `ajaxSubmit` 方法的使用技巧及其应用场景。首先,介绍了如何正确引入必要的脚本文件,如 `jquery.form.js` 和 `jquery-1.8.0.min.js`。接着,通过具体示例展示了如何利用 `ajaxSubmit` 方法实现表单的异步提交,包括数据的发送、接收和处理。此外,还讨论了该方法在不同场景下的应用,如文件上传、表单验证和动态更新页面内容等,提供了丰富的代码示例和最佳实践建议。 ... [详细]
  • Python内置模块详解:正则表达式re模块的应用与解析
    正则表达式是一种强大的文本处理工具,通过特定的字符序列来定义搜索模式。本文详细介绍了Python内置的`re`模块,探讨了其在字符串匹配、验证和提取中的应用。例如,可以通过正则表达式验证电子邮件地址、电话号码、QQ号、密码、URL和IP地址等。此外,文章还深入解析了`re`模块的各种函数和方法,提供了丰富的示例代码,帮助读者更好地理解和使用这一工具。 ... [详细]
  • 如何精通编程语言:全面指南与实用技巧
    如何精通编程语言:全面指南与实用技巧 ... [详细]
  • SSAS入门指南:基础知识与核心概念解析
    ### SSAS入门指南:基础知识与核心概念解析Analysis Services 是一种专为决策支持和商业智能(BI)解决方案设计的数据引擎。该引擎能够为报告和客户端应用提供高效的分析数据,并支持在多维数据模型中构建高性能的分析应用。通过其强大的数据处理能力和灵活的数据建模功能,Analysis Services 成为了现代 BI 系统的重要组成部分。 ... [详细]
  • 本文探讨了资源访问的学习路径与方法,旨在帮助学习者更高效地获取和利用各类资源。通过分析不同资源的特点和应用场景,提出了多种实用的学习策略和技术手段,为学习者提供了系统的指导和建议。 ... [详细]
  • JavaScript XML操作实用工具类:XmlUtilsJS技巧与应用 ... [详细]
  • 动态壁纸 LiveWallPaper:让您的桌面栩栩如生(第二篇)
    在本文中,我们将继续探讨如何开发动态壁纸 LiveWallPaper,使您的桌面更加生动有趣。作为 2010 年 Google 暑期大学生博客分享大赛 Android 篇的一部分,我们将详细介绍 Ed Burnette 的《Hello, Android》第三版中的相关内容,并分享一些实用的开发技巧和经验。通过本篇文章,您将了解到如何利用 Android SDK 创建引人入胜的动态壁纸,提升用户体验。 ... [详细]
author-avatar
手机用户2502929415
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有